import java.util.ArrayList;

//通过 synchornized 修饰 Arraylist 类对象 ， 将 ArrayList 修改为并发安全的
public class SynchronizedDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
//        for(int i = 0; i < 10000; i++){
//            new Thread(()->{
//                list.add("a");
//            }).start();
//        }
//        try {
//            Thread.sleep(3000);
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//        System.out.println(list.size());
//                //测试输出为 9987 ,说明 ArrayList类不安全
//    }

        for(int i = 0; i < 10000; i++){

                new Thread(()->{
                    synchronized (list){
                        list.add("a");
                    }
                }).start();
            }
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println(list.size());
        //测试输出为 10000 ,说明用 synchronized 修饰后， ArrayList类变安全了
    }

}
